from flask_wtf import FlaskForm
from wtforms import BooleanField, StringField, PasswordField, SubmitField,TextAreaField
from wtforms.validators import DataRequired, ValidationError, Email,EqualTo,Length
from app.models import User

class LoginForm(FlaskForm):
	username = StringField('Username',validators=[DataRequired()])
	password = PasswordField('Password', validators = [DataRequired()])
	remember_me = BooleanField('Remember Me')
	submit = SubmitField('Sign In')

class RegistrationForm(FlaskForm):
	username = StringField('Username',validators = [DataRequired()])
	email = StringField('Email',validators = [DataRequired(), Email()])
	password = PasswordField('Password',validators = [DataRequired()])
	password2 = PasswordField('Repeat Password', validators = [DataRequired(), EqualTo('password')])
	submit = SubmitField('Register')

	def validate_username(self, username):
		user = User.query.filter_by(username = username.data).first()
		if user is not None:
			raise ValidationError('Please use a different username.')

	def validate_email(self, email):
		user = User.query.filter_by(email = email.data).first()
		if user is not None:
			raise ValidationError('Please use a different email address.')


class ResetPasswordRequestForm(FlaskForm):
	email = StringField('Email',validators=[DataRequired(),Email()])
	submit = SubmitField('Request Password Reset')

class ResetPasswordForm(FlaskForm):
	password = PasswordField('Password',validators=[DataRequired()])
	password2 = PasswordField('Repeat Password', validators = [DataRequired(),EqualTo('password')])
	submit = SubmitField('Request Password Reset')
